package com.briup.comon;

/**
 * 基于ThreadLocal封装工具类，用户保存和获取当前登录用户id
 * 什么是ThreadLocal? ThreadLocal凭不是一个Thread,而是Thread的局部变量，ThreadLocal为每一个线程提供一份存储的空间，
 * 具有线程隔离的效果，只有在线程内才能获得对应的值，线程外则不能访问
 */
public class BaseContext {
    private static ThreadLocal<Long> threadLocal = new ThreadLocal<>();

    /**
     * 在过滤器那里设置值，因为一次请求中，会经过过滤器，更新方法和自动填充的更新方法
     * @param id  ThreadLocal这个类中有两个方法，一个是set和get 可以向ThreadLocal存入和取出
     */
    public static void setCurrentId(Long id){
        threadLocal.set(id);
    }

    /**
     * 获取值
     * @return
     */
    public static Long getCurrentId(){
        return threadLocal.get();
    }
}